//复写零
//给你一个长度固定的整数数组 arr ，请你将该数组中出现的每个零都复写一遍，并将其余的元素向右平移。
// 注意：请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改，不要从函数返回任何东西。

import java.util.Scanner;

//原理:
//先根据"异地"操作,然后优化成"就地"操作
//1.先找到最后一个复写的数
//  双指针 cur遍历数组, dest 表示最终的数字(复写之后的最后一位是什么),用cur来判断dest走一步还是两步,所以dest最开始要指向-1
//  当dest走完数组,cur指向的数字,就是最后一位,否则就是cur++
//2.数组"从后向前",完成复写
//  此时 cur 表示数组本身, dest表示cur要写到的位置
public class test2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int count = in.nextInt();//元素个数
        int[] nums = new int[count];
        for (int i = 0; i < count; i++) {
            nums[i] = in.nextInt();
        }
        getResult(nums);
    }
    public static void getResult(int[] nums){
        int dest = -1;
        int cur = 0;
        for(;cur< nums.length;cur++){
            if(nums[cur]==0){
                dest+=2;
            }else {
                dest++;
            }

            if(dest>=nums.length-1){
                break;
            }
        }
        //判断是否越界
        if(dest== nums.length){
            //越界
            nums[nums.length-1] = 0;
            cur--;
            dest-=2;
        }
        for (;cur >-1 ; cur--) {
            //往前遍历
            if(nums[cur]==0){
                nums[dest]=0;
                nums[dest-1]=0;
                dest-=2;
            }else{
                nums[dest] = nums[cur];
                dest--;
            }

        }
        for (int num : nums) {
            System.out.print(num);
        }
    }
}
